import http from './http';

/**
 * 获取分类列表
 * @returns {Promise}
 */
export function getCategoriesList() {
  try {
    // 实际生产环境中的代码，调用真实的后端API
    return http.get('/categories/list')
      .then(response => {
        // 成功获取到API数据
        console.log('成功从后端API获取分类数据，原始响应:', response);
        
        // 处理不同格式的API响应
        let categoriesData = [];
        
        // 检查响应结构，确保获取到正确的分类数据
        if (response && response.data) {
          // 情况1：如果response.data是数组，直接使用
          if (Array.isArray(response.data)) {
            categoriesData = response.data;
          }
          // 情况2：如果response.data有data字段，使用data字段
          else if (response.data.data && Array.isArray(response.data.data)) {
            categoriesData = response.data.data;
          }
          // 情况3：如果response.data有categories字段，使用categories字段
          else if (response.data.categories && Array.isArray(response.data.categories)) {
            categoriesData = response.data.categories;
          }
          // 其他情况，抛出错误
          else {
            console.warn('API返回数据格式不标准:', response.data);
            throw new Error('API返回数据格式不标准');
          }
        }
 else {
          // 当API调用成功但没有返回数据时，抛出错误
          throw new Error('API返回空数据');
        }
        
        console.log('处理后的分类数据，共', categoriesData.length, '条记录:', categoriesData);
        return categoriesData;
      })
      .catch(error => {
        console.error('获取分类数据失败 (API错误):', error.message);
        throw error;
      });
  } catch (error) {
    console.error('获取分类数据时发生异常:', error);
    throw error;
  }
}

/**
   * 获取模拟分类数据（用于开发和测试）
   * @returns {Array}
   */
  

/**
 * 获取分类下的子分类
 * @param {number} parentId - 父分类ID
 * @returns {Promise}
 */
export function getSubcategoriesByParentId(parentId) {
  try {
    // 实际生产环境中的代码，调用真实的后端API
    return http.get('/categories/list', { params: { parentId } })
      .then(response => {
        // 成功获取到API数据
        console.log('成功从后端API获取子分类数据，parentId:', parentId, '，原始响应:', response);
        
        // 处理不同格式的API响应
        let subcategoriesData = [];
        
        // 检查响应结构，确保获取到正确的子分类数据
        if (response && response.data) {
          // 情况1：如果response.data是数组，直接使用
          if (Array.isArray(response.data)) {
            subcategoriesData = response.data;
          }
          // 情况2：如果response.data有data字段，使用data字段
          else if (response.data.data && Array.isArray(response.data.data)) {
            subcategoriesData = response.data.data;
          }
          // 情况3：如果response.data有categories字段，使用categories字段
          else if (response.data.categories && Array.isArray(response.data.categories)) {
            subcategoriesData = response.data.categories;
          }
          // 其他情况，抛出错误
          else {
            console.warn('API返回数据格式不标准:', response.data);
            throw new Error('API返回数据格式不标准');
          }
        } else {
          // API调用成功但没有返回数据
          throw new Error('API返回空数据');
        }
        
        console.log('处理后的子分类数据，parentId:', parentId, '，共', subcategoriesData.length, '条记录:', subcategoriesData);

        return subcategoriesData;
      })
      .catch(error => {
        console.error('获取子分类数据失败 (API错误):', error.message);
        throw error;
      });
  } catch (error) {
    console.error('获取子分类数据时发生异常:', error);
    throw error;
  }
}